package com.shuai.blog.mapper;

import com.shuai.blog.entity.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

@Mapper
public interface UserMapper {

    /**
     * 完成用户的注册功能
     *
     * @param userInfo 包含用户信息的实体对象
     * @return 注册成功返回1 | 0
     */
    int register(UserInfo userInfo);

    UserInfo login(@Param("username") String username);

    /**
     * 根据用户id获取用户信息
     */
    UserInfo getUserById(@Param("userId") Integer userId);

    /**
     * 修改用户的state信息 -- 准备冻结
     */
    int updateStateByName(UserInfo userInfo);

    /**
     * 根据用户编号查询用户的登陆状态
     */
    int getUserState(@Param("userId") Integer userId);

    /**
     * 修改作者的昵称
     */
    int updateNickName(UserInfo userInfo);

    /**
     * 根据作者编号修改账户密码
     */
    int updatePassword(UserInfo userInfo);

    /**
     * 更新用户头像
     */
    int updatePhoto(@Param("userId") Integer userId, @Param("filePath") String src);

    /**
     * 根据用户名获取密保问题和答案
     */
    UserInfo getConfidentialityAndAnswer(@Param("username") String username);

    /**
     * 根据用户名和密保答案修改该用户的密码
     */
    int updatePwdByAnswer(UserInfo userInfo);
}
